package com.leil.java8.函数组合;

import java.util.function.Predicate;
import java.util.stream.Stream;

public class PredicateComposition {

    static Predicate<String>
    p1 = s -> s.contains("bar"),
    p2 = s -> s.length() < 5,
    p3 = s -> s.contains("foo"),
    p4 = p1.negate().and(p2).or(p3);    // 谓词组合：（不包含"bar"，并且长度小于5）或者（包含"foo"）

    public static void main(String[] args) {
        Stream.of("bar", "foobar", "foobaz", "fongopuckey", "foopuckeny")
                .filter(p4)
                .forEach(System.out::println);
    }

}
